<html>
    <head>
    <link rel="stylesheet" href="lmm.css" type="text/css" />
    </head>
<body class="lmm">
<div class='chapter' id='33'>33. </div>

<div class='section' id='33.1'>33.1 </div>
Additional standard reader macros: ` , " &otimes; #
Character set.
Characters to avoid if you plan to win on the pdp10.
Typein conventions.  CALL.  BREAK.  FORM.  CLEAR.  ESC.  Don't use control characters.  EDT?
Mention subprimitives.  Conventions about the use of percent sign.
&amp;-keywords in lambda-lists.  &amp;rest-pitfall.


<div class='section' id='33.2'>33.2 </div>
Integrated editor.
  Like Emacs, but no minibuffer, completing reader, no control/meta prefices.
  How to edit functions out of a file.
  Pointer to description of additional features.
Logging in.  How to tailor the editor commands, BASE, IBASE, etc.


<div class='section' id='33.3'>33.3 </div>
  Lack of the properties EXPR, FEXPR, MACRO, SUBR, LSUBR, FSUBR, and ARRAY.
  FBOUNDP, FSYMEVAL, FSET, FMAKUNBOUND.
  Macros, arrays.


<div class='section' id='33.4'>33.4 </div>
No GC yet!  (ROOM)
Notice that things written in Lap are going to have to be rewritten in Lisp.
Variables in function position.  No LABEL.
RETURN out of MAPC is not properly compiled; you should use THROW.
 This won't be fixed unless there is a big demand.  Likewise a GO
 out of the arguments to a function (not a special form), probably
 doesn't work.
Readtable incompatibility.
  For now, there is no hope, except do put in here how to define
  macro characters since that may lie within human capability.
Obarray format incompatibility, but you should use MAPATOMS.
I/O incompatibilities.
No hunks (yet?)
No flonums nor bignums yet.


<div class='section' id='33.5'>33.5 </div>
List of symbols in Maclisp which may signify danger.  Things like SSTATUS,
  value of CAR, value of PRIN1, ^Q, UREAD, GC, GCTWA, EXPR, AUTOLOAD, etc.
  Also something about functions with slightly different arguments, e.g. TYI.
  NTH is in the system, may be different from people's private NTHs.
  Include a list of all the Maclisp functions that aren't in the lisp
  machine, and all the lisp machine functions (from lmfns) that are
  not in Maclisp, and don't have a % or a - in their names.
Point (with pride) to macros in LIBLSP when that happens.
COMPAT - this is going to have to be fixed up anyway.  Current most
  winning version is in MINIMA; COMPAT &gt;.
Defmacro and defstruct.  Setf.  Named-structures (pointer to).
Pointer to the more universally useful new standard functions, e.g. SELECTQ, &lt;=, LOGAND, LDB.
List of functions that don't exist, including which are temporary and which are permanent.
Lack of need for +, +$, etc.  Overflow checking always exists, unless you use
  %24-BIT-PLUS and friends.


<div class='section' id='33.6'>33.6 </div>
Error handling is quite different.  Write this when we find out what it is.


<div class='section' id='33.7'>33.7 </div>
I/O is a little different.  Summarize things you need to know, and bugs.(?)
  See Macsyma experiences below.
Filename format.
Streams (pointer to at least).
How to use the keyboard, the mouse, the TV.  Pointers to standard routines.
  Fonts.  Menus (when they are finished).
  How to call EDT (when this facility exists.)


<div class='section' id='33.8'>33.8 </div>
Integrated compiler.  Pdp10 compiler, also.  Pointer to how-to-use.


<div class='section' id='33.9'>33.9 </div>
Data types differences.
    Strings.  Pointer to string functions.
    Arrays (see next).
    Fixnums are only 24 bits instead of 36.  They are EQ, for whatever that's worth.
    Cdr-coding.
    Flonum differences.
    Locatives.
    Hunks.
    DTP-U-ENTRY, DTP-FEF-POINTER.
    Mention invisible pointers in case user sees one?  Mention #&lt;name number&gt;.
Additional array features; array incompatibilities:  column-major order (probably
  fillarray and listarray don't work on multi-dimensional arrays yet anyway),
  fixnum/flonum arrays.  No "NIL" arrays.
  MAKE-ARRAY, ADJUST-ARRAY-SIZE (pointers to).


<div class='section' id='33.10'>33.10 </div>

<div class='section' id='33.11'>33.11 </div>
Performance considerations:
  Cdr-coding and rplacd.  Things that are in microcode.
  Main thing is no competition from other users, hence no penalty for
   interaction and less penalty for large jobs.
  CPU, disk transfer speed, and disk seek speed all about 3 times faster
   than AI machine.  But page size is smaller, and memory is smaller.
  Conclusion is that speed is less important and locality is more important
   than on the pdp10.
Using areas to increase locality.
Interpreter vs compiler tra<!-- eof -->f is different.  Relative speedup
  due to compilation is considerably more, compiler is much faster, and
  is less likely to break your code.  All error checking in the interpreter
  is also present in compiled code.  Micro-compiler is something different.
  Currently baktraceing is extremely painful when using the interpreter.
  This is hard to fix; best route is probably for DEFUN to maintain
  a table of lambda-expressions vs function names (assuming this is
  better than simply checking every symbol on the obarray.)


<div class='section' id='33.12'>33.12 </div>
DESCRIBE, ARGLIST, meta-X ARGLIST, APROPOS, WHO-USES, DISASSEMBLE(?)
STEP.  TRACE differences
Give pointers to methods of debugging.
Note that *RSET doesn't do much (mostly machine is always in (*RSET T) mode).  NOUUO,
  NORET, and (SSTATUS UUOLINKS) don't exist and aren't needed.
SET-ERROR-MODE
SET-MAR
LOAD-FILE-ALIST, COMPILE-FILE-ALIST
Pointers to CC-DISK-RESTORE, CC in general.


<div class='section' id='33.13'>33.13 </div>
How to write code that works in both Lisp-machine and Maclisp; conditionalization
  macros, LISPM; MACROS &gt; (--&gt; LIBLSP), things to avoid.


<div class='section' id='33.14'>33.14 </div>
Closures, stacks, interrupts, processes.
Multiple-value-return (pointer to).
Some recommendations about better ways to do things.  E.g. strings instead of
  lists of characters, tv-compute-motion instead of column numbers where
  appropriate, compile-driver, etc. etc. etc.
(Also some stuff in the I/O section.)
How to convert (from?) various LIBLSP; libraries?  TVDRVR?

----

MOON@MIT-MC 12/21/77 00:36:00 Re: Bullshit to put into CGUIDE
Trouble about T and NIL as streams, order of args to TYI/READ/READCH,
TTY prescan.  This may get fixed up somewhat.

The need for FUNCALL.

RETURN out of MAPC is not properly compiled; you should use THROW.
This won't be fixed unless there is a big demand.  Likewise a GO
out of the arguments to a function (not a special form), probably
doesn't work.

Function-cell vs properties blues.

No support for LABEL.  (I guess it could be written as a macro)

sstatus +, _, terpri, etc.  Also chrct and linel stuff.
CURSORPOS is currently only part of Macsyma.

PURCOPY, TRUE, REMOVE, |

Filename format, more processing goes off one character earlier
(after line feed instead of before next), user control over more
processing and split-screen mode works differently.

Go through BUG LISPM backlog for things that don't work.
</body>
</html>

